package br.com.imob.dao;

import br.com.imob.modelo.Pais;

import java.util.List;



public class PaisDao extends GenericDao {

    public Integer adicionarPais(Pais pais) {
        saveOrUpdatePojo(pais);
        return pais.getPaisId();
    }

    public void removerPais(Pais pais) {
        removerPojo(pais);
    }

    /* Precisa definir o ID */
    public void atualizarPais(Pais recupera) {
        saveOrUpdatePojo(recupera);
    }
    
    /**
	 * Edita um Pais
	 * @param String oldPais
	 * @param String newPais
	 */
	public void atualizarPais(String oldPais, String newPais ) {
		if ( ( !"".equals(oldPais) && oldPais != null )
			&& ( !"".equals(newPais) && newPais != null ) ) 
			atualizarPais( getPaisQNamed(oldPais), new Pais(newPais) );
	}
    
    /* Precisa definir qual atribuito sera a chave a identificar
     * a tupla a ser alterada */

    public void atualizarPais(Pais recuperar, Pais alterar) {
        recuperar = retrivePais(recuperar);

        if (alterar.getPais() != null) {
            recuperar.setPais(alterar.getPais());
        }

        saveOrUpdatePojo(recuperar);
    }

//	Artificio para Recuperar a Tupla de Pais
    protected Pais retrivePais(Pais recuperar) {
        if (recuperar.getPaisId() == null) {
            recuperar = getPaisQNamed(recuperar.getPais());
        } else {
            recuperar = getPais(recuperar.getPaisId());
        }
        return recuperar;
    }

//	Consultas
    public Pais getPais(Integer key) {
        return getPojoByID(Pais.class, key);
    }

    public Pais getPaisByQuery(String query, Object... params) {
        return getPojoByQry(query, params);
    }

    public Pais getPaisQNamed(String fltrPais) {
        return getPojoByQNamed("Pais.findByPais", fltrPais);
    }

    public List<Pais> getPaises() {
        return (List<Pais>) getALL(Pais.class);
    }

    public List<Pais> getPaisesQNamedPRX(String fltrPais) {
        return getListByQNamedPRX("Pais.findLikeByPais", fltrPais);
    }

    public List<Pais> getPaisesByQuery(String query, Object... params) {
        return getListByQry(query, params);
    }
}
